怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具 | 您所在的位置:网站首页 › war robots为什么打不开 › 怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具 |
怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具
发布时间:2023-04-13 09:35:31
来源:亿速云
阅读:76
作者:iii
栏目:开发技术
本文小编为大家详细介绍“怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 一、技术介绍1.chatgpt-java是一个OpenAI的Java版SDK,支持开箱即用。目前以支持官网全部Api。支持最新版本GPT-3.5-Turbo模型以及whisper-1模型。 2.Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。 3.ChatUI Pro 是在ChatUI 基础组件的基础上,结合阿里小蜜的最佳实践,沉淀和总结出来的一个开箱即用的,可快速搭建智能对话机器人的框架。它简单易上手,通过简单的配置就能搭建出对话机器人;同时它强大易扩展,通过丰富的接口和自定义卡片满足各种定制化需求。 二、项目介绍本项目采用了GPT-3.5-Turb模型作为基础,通过springboot结合redis、chat-java以及chatUI Pro实现简单的人工智能机器人。因为访问openAI的API返回结果比较慢,项目中当前端将问题请求发送到后端后,后端会将生成一个UUID,返回前端,同时后端也会重新开启一个线程去访问openAI,当openAI返回结果后,后端将UUID做为key,openAI返回的结果做为value存储到redis中。前端会根据后端第一次请求的结果中UUID做为参数每个5s请求一次后端的answer接口,answer接口会根据UUID查询redis是否有值,直到后端answer接口返回结果后前端将结果输出给用户 三、项目搭建1.创建springboot项目,项目命名mychatgpt。 2.导入项目pom的依赖 4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.12 com.xyh mychatgpt 0.0.1-SNAPSHOT mychatgpt Demo project for Spring Boot 8 org.springframework.boot spring-boot-starter-data-redis org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-aop org.springframework.boot spring-boot-starter-test org.apache.logging.log4j log4j-api org.apache.logging.log4j log4j-to-slf4j test org.projectlombok lombok true org.apache.httpcomponents httpcore com.theokanning.openai-gpt3-java api 0.10.0 com.theokanning.openai-gpt3-java service 0.10.0 com.theokanning.openai-gpt3-java client 0.10.0 cn.hutool hutool-all 5.8.12 com.unfbx chatgpt-java 1.0.5 mysql mysql-connector-java 8.0.17 com.alibaba druid-spring-boot-starter 1.2.8 com.baomidou mybatis-plus-boot-starter 3.5.2 com.baomidou mybatis-plus-generator com.github.yulichang mybatis-plus-join 1.4.2 com.apifan.common common-random 1.0.19 junit junit test org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok3.编写chatGPT实现工具类 package com.xyh.mychatgpt.utils; import com.unfbx.chatgpt.OpenAiClient; import com.unfbx.chatgpt.entity.chat.ChatChoice; import com.unfbx.chatgpt.entity.chat.ChatCompletion; import com.unfbx.chatgpt.entity.chat.Message; import com.unfbx.chatgpt.entity.common.Choice; import com.unfbx.chatgpt.entity.completions.Completion; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; /** * @author xiangyuanhong * @description: TODO * @date 2023/3/21上午9:28 */ @Component public class ChatGPTUtils { @Value("${xyh.openai.key}") private String token; @Autowired private RedisUtils redisUtils; public void ask(String model,String question,String uuid){ StringBuffer result=new StringBuffer(); try { OpenAiClient openAiClient = new OpenAiClient(token, 3000, 300, 300, null); if("GPT-3.5-Turb".equals(model)){ // GPT-3.5-Turb模型 Message message=Message.builder().role(Message.Role.USER).content(question).build(); ChatCompletion chatCompletion = ChatCompletion.builder().messages(Arrays.asList(message)).build(); List resultList = openAiClient.chatCompletion(chatCompletion).getChoices(); for (int i = 0; i { chatGPTUtils.ask("GPT-3.5-Turb", finalQuestion,uuid); }); return R.ok().put("data",uuid); } @GetMapping("/answer") public R answer(String uuid){ String result=redisUtils.get(uuid); return R.ok().put("data",result); } }5.前端页面开发,在项目templates目录创建index.html页面,并引入chatUI pro相关文件 滴答小爱6.创建setup.js实现chatUI Pro与后端通信交换。 var bot = new ChatSDK({ config: { // navbar: { // title: '滴答小爱' // }, robot: { avatar: 'images/chat.png' }, // 用户头像 user: { avatar: 'images/user.png', }, // 首屏消息 messages: [ { type: 'text', content: { text: '您好,小爱为您服务,请问有什么可以帮您的?' } } ], // 快捷短语 // quickReplies: [ // { name: '健康码颜色',isHighlight:true }, // { name: '入浙通行申报' }, // { name: '健康码是否可截图使用' }, // { name: '健康通行码适用范围' }, // ], // 输入框占位符 placeholder: '输入任何您想询问的问题', }, requests: { send: function (msg) { if (msg.type === 'text') { return { url: '/ask', data: { question: msg.content.text } }; } } }, handlers: { /** * * 解析请求返回的数据 * @param {object} res - 请求返回的数据 * @param {object} requestType - 请求类型 * @return {array} */ parseResponse: function (res, requestType) { // 根据 requestType 处理数据 if (requestType === 'send' && res.code==0) { // 用 isv 消息解析器处理数据 $.ajaxSettings.async=false; var answer=""; var isOK=false; while(!isOK){ $.get("/answer",{uuid:res.data},function(result){ console.log(result.data) if(null != result.data){ isOK=true; answer=result.data; } },"json"); if(!isOK){ sleep(5000); } } $.ajaxSettings.async=true; return [{"_id":res.data,type:"text",content:{text:answer},position:"left"}]; } }, }, }); function sleep(n) { //n表示的毫秒数 var start = new Date().getTime(); while (true) { if (new Date().getTime() - start > n) { break; } } } bot.run();7.项目搭建完成后启动springboot项目然后访问http://ip:端口就可以。项目最终效果:http://hyrun.vip/ 四、项目展示读到这里,这篇“怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。 推荐阅读: 如何理解SpringBoot 中的约定优于配置 SpringBoot自动装配原理是什么免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。 springboot chatgpt 上一篇新闻:怎么使用chatgpt解决隐藏的bug 下一篇新闻:ChatGPT-4.0有哪些功能 猜你喜欢 C语言数据结构图如何创建与遍历 node编写文件上传的接口的坑如何解决 Docker中容器的创建与启停问题怎么解决 Java+JFrame怎么实现贪吃蛇小游戏 MySQL常用引擎有哪些 C语言怎么遍历邻接表简单路径 echarts如何实现饼图与样式设置 C语言算法积累分离数位怎么实现 PHP如何实现常见排序算法 echarts的y轴刻度计算需求实例分析 |
CopyRight 2018-2019 实验室设备网 版权所有 |